package org.testng.eclipse.buildpath; import java.io.File; import java.io.IOException; import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.jdt.core.ClasspathVariableInitializer; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.osgi.framework.Bundle; import org.testng.eclipse.TestNGPlugin; import org.testng.eclipse.TestNGPluginConstants; /** * This class/interface */ public class TestNGHomeInitializer extends ClasspathVariableInitializer { /** * @see org.eclipse.jdt.core.ClasspathVariableInitializer#initialize(java.lang.String) */ public void initialize(String variable) { try { Bundle bundle= Platform.getBundle(TestNGPlugin.PLUGIN_ID); if (bundle == null) { clearVariable(); return; } URL local= null; try { local= FileLocator.toFileURL(bundle.getEntry("/")); //$NON-NLS-1$ } catch (IOException e) { clearVariable(); return; } IPath location= Path.fromOSString(new File(local.getPath()).getAbsolutePath()); if (null != location) { JavaCore.setClasspathVariable(TestNGPluginConstants.TESTNG_HOME, location, null); } else { } } catch(JavaModelException jmex) { clearVariable(); } } private void clearVariable() { JavaCore.removeClasspathVariable(TestNGPluginConstants.TESTNG_HOME, null); } }